//
//  Problem1768.swift
//  TestProject
//
//  Created by 武侠 on 2021/3/15.
//  Copyright © 2021 zhulong. All rights reserved.
//

import UIKit

/*
 1768. 交替合并字符串
 给你两个字符串 word1 和 word2 。请你从 word1 开始，通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长，就将多出来的字母追加到合并后字符串的末尾。

 返回 合并后的字符串 。

 示例 1：
     输入：word1 = "abc", word2 = "pqr"
     输出："apbqcr"
     解释：字符串合并情况如下所示：
     word1：  a   b   c
     word2：    p   q   r
     合并后：  a p b q c r
 示例 2：
     输入：word1 = "ab", word2 = "pqrs"
     输出："apbqrs"
     解释：注意，word2 比 word1 长，"rs" 需要追加到合并后字符串的末尾。
     word1：  a   b
     word2：    p   q   r   s
     合并后：  a p b q   r   s
 示例 3：
     输入：word1 = "abcd", word2 = "pq"
     输出："apbqcd"
     解释：注意，word1 比 word2 长，"cd" 需要追加到合并后字符串的末尾。
     word1：  a   b   c   d
     word2：    p   q
     合并后：  a p b q c   d
 提示：
     1 <= word1.length, word2.length <= 100
     word1 和 word2 由小写英文字母组成

 */
@objcMembers class Problem1768: NSObject {
    func solution() {
        print(mergeAlternately("abc", "pqr"))
        print(mergeAlternately("ab", "pqrs"))
        print(mergeAlternately("abcd", "pq"))
    }
    
    /*
     遍历2个字符串，依次拿取2个字符串的字符
     */
    func mergeAlternately(_ word1: String, _ word2: String) -> String {
        let charts1 = Array(word1)
        let charts2 = Array(word2)
        
        var i = 0
        var j = 0
        var results:[Character] = []
        while i < charts1.count, j < charts2.count {
            results.append(charts1[i])
            results.append(charts2[j])
            i += 1
            j += 1
        }
        if i < charts1.count {
            results.append(contentsOf: charts1[i..<charts1.count])
        } else if j < charts2.count {
            results.append(contentsOf: charts2[j..<charts2.count])
        }
        
        return String(results)
    }
}
